package deal2;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelToCsvConverter {

    public static void main(String[] args) {
        // 输入文件路径（Excel文件）
        String inputFilePath = "C:\\Users\\咚咚咚豆\\Desktop\\ETC\\outSZ.xlsx";
        // 输出文件路径（CSV文件）
        String outputFilePath = "C:\\Users\\咚咚咚豆\\Desktop\\ETC\\outSZ.csv";

        try {
            // 读取Excel文件
            FileInputStream fileInputStream = new FileInputStream(inputFilePath);
            XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
            XSSFSheet sheet = workbook.getSheetAt(0); // 仅处理第一个Sheet

            // 创建CSV文件写入器
            FileWriter csvWriter = new FileWriter(outputFilePath);

            // 创建数据格式化器
            DataFormatter dataFormatter = new DataFormatter();
            // 创建日期格式化器
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            // 遍历每一行并将数据写入CSV
            for (Row row : sheet) {
                StringBuilder csvLine = new StringBuilder();
                for (Cell cell : row) {
                    // 使用数据格式化器获取单元格的文本值
                    String cellValue = dataFormatter.formatCellValue(cell);

                    // 根据单元格类型进行特定处理
                    switch (cell.getCellType()) {
                        case NUMERIC:
                            // 如果是数字类型，可能是日期或其他数字
                            if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
                                // 如果是日期类型，使用日期格式化器转换为字符串
                                cellValue = dateFormat.format(cell.getDateCellValue());
                            }
                            // 如果是其他数字类型，保持不变
                            break;
                        // 其他单元格类型处理可以在这里扩展
                    }

                    // 替换字段值
                    if ("SFZRKMC".equals(cell.getSheet().getRow(0).getCell(cell.getColumnIndex()).getStringCellValue())) {
                        // 如果是SFZRKMC字段，替换特定值
                        cellValue = cellValue.replace("松山湖南", "广东松山湖南");
                    } else if ("SFZCKMC".equals(cell.getSheet().getRow(0).getCell(cell.getColumnIndex()).getStringCellValue())) {
                        // 如果是SFZCKMC字段，替换特定值
                        cellValue = cellValue.replace("松山湖南", "广东松山湖南");
                    }else if ("CKSJ".equals(cell.getSheet().getRow(0).getCell(cell.getColumnIndex()).getStringCellValue())) {
                        // 如果是CKSJ字段，检查是否为"\N"，如果是则替换为 'NULL'
                        if (cellValue.equals("\\N")) {
                            cellValue = "0001-01-01 00:00:00";
                        }
                    }


                    csvLine.append(cellValue).append(",");
                }
                // 去除末尾的逗号
                csvLine.deleteCharAt(csvLine.length() - 1);
                // 写入CSV文件
                csvWriter.append(csvLine.toString()).append("\n");
            }

            // 关闭资源
            csvWriter.flush();
            csvWriter.close();
            workbook.close();
            fileInputStream.close();

            System.out.println("Conversion completed. CSV file is saved at: " + outputFilePath);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
